/*
 * SpanDSP - a series of DSP components for telephony
 *
 * cielab_luts.h
 *
 * Written by Steve Underwood <steveu@coppice.org>
 *
 * Copyright (C) 2011 Steve Underwood
 *
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 2.1,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

/*! \file */

#if defined(T42_USE_LUTS)
static const float sRGB_to_linear[256] =
{
    0.000000,
    0.000302,
    0.000605,
    0.000907,
    0.001209,
    0.001512,
    0.001814,
    0.002116,
    0.002419,
    0.002721,
    0.003023,
    0.003333,
    0.003661,
    0.004007,
    0.004371,
    0.004754,
    0.005156,
    0.005577,
    0.006017,
    0.006477,
    0.006957,
    0.007457,
    0.007977,
    0.008518,
    0.009080,
    0.009663,
    0.010267,
    0.010893,
    0.011540,
    0.012209,
    0.012900,
    0.013614,
    0.014350,
    0.015109,
    0.015890,
    0.016695,
    0.017523,
    0.018375,
    0.019250,
    0.020149,
    0.021072,
    0.022019,
    0.022991,
    0.023987,
    0.025008,
    0.026054,
    0.027125,
    0.028221,
    0.029343,
    0.030490,
    0.031663,
    0.032862,
    0.034087,
    0.035338,
    0.036616,
    0.037920,
    0.039250,
    0.040608,
    0.041993,
    0.043404,
    0.044844,
    0.046310,
    0.047804,
    0.049326,
    0.050876,
    0.052454,
    0.054060,
    0.055694,
    0.057357,
    0.059049,
    0.060769,
    0.062518,
    0.064296,
    0.066103,
    0.067940,
    0.069806,
    0.071701,
    0.073626,
    0.075581,
    0.077566,
    0.079581,
    0.081627,
    0.083702,
    0.085808,
    0.087945,
    0.090112,
    0.092311,
    0.094540,
    0.096800,
    0.099092,
    0.101414,
    0.103769,
    0.106155,
    0.108572,
    0.111021,
    0.113503,
    0.116016,
    0.118562,
    0.121139,
    0.123750,
    0.126392,
    0.129068,
    0.131776,
    0.134517,
    0.137291,
    0.140098,
    0.142938,
    0.145812,
    0.148719,
    0.151659,
    0.154633,
    0.157641,
    0.160683,
    0.163758,
    0.166868,
    0.170012,
    0.173190,
    0.176403,
    0.179650,
    0.182932,
    0.186248,
    0.189599,
    0.192985,
    0.196407,
    0.199863,
    0.203354,
    0.206881,
    0.210443,
    0.214041,
    0.217675,
    0.221344,
    0.225049,
    0.228789,
    0.232566,
    0.236379,
    0.240229,
    0.244114,
    0.248036,
    0.251995,
    0.255990,
    0.260021,
    0.264090,
    0.268196,
    0.272338,
    0.276518,
    0.280734,
    0.284988,
    0.289280,
    0.293609,
    0.297975,
    0.302379,
    0.306821,
    0.311301,
    0.315818,
    0.320374,
    0.324967,
    0.329599,
    0.334269,
    0.338978,
    0.343725,
    0.348510,
    0.353334,
    0.358197,
    0.363099,
    0.368040,
    0.373019,
    0.378038,
    0.383096,
    0.388193,
    0.393329,
    0.398505,
    0.403721,
    0.408976,
    0.414270,
    0.419605,
    0.424979,
    0.430393,
    0.435848,
    0.441342,
    0.446877,
    0.452452,
    0.458067,
    0.463722,
    0.469419,
    0.475156,
    0.480933,
    0.486751,
    0.492610,
    0.498510,
    0.504452,
    0.510434,
    0.516457,
    0.522522,
    0.528628,
    0.534775,
    0.540964,
    0.547194,
    0.553466,
    0.559780,
    0.566136,
    0.572533,
    0.578973,
    0.585455,
    0.591978,
    0.598544,
    0.605152,
    0.611803,
    0.618496,
    0.625232,
    0.632010,
    0.638831,
    0.645694,
    0.652600,
    0.659550,
    0.666542,
    0.673577,
    0.680656,
    0.687777,
    0.694942,
    0.702151,
    0.709402,
    0.716698,
    0.724036,
    0.731419,
    0.738845,
    0.746315,
    0.753829,
    0.761386,
    0.768988,
    0.776634,
    0.784324,
    0.792058,
    0.799837,
    0.807660,
    0.815527,
    0.823439,
    0.831396,
    0.839397,
    0.847443,
    0.855533,
    0.863669,
    0.871850,
    0.880075,
    0.888346,
    0.896662,
    0.905023,
    0.913429,
    0.921881,
    0.930378,
    0.938921,
    0.947509,
    0.956143,
    0.964823,
    0.973548,
    0.982319,
    0.991137
};

static const uint8_t linear_to_sRGB[4096] =
{
    0,
    0,
    1,
    2,
    3,
    4,
    4,
    5,
    6,
    7,
    8,
    8,
    9,
    10,
    11,
    12,
    12,
    13,
    14,
    14,
    15,
    15,
    16,
    17,
    17,
    18,
    18,
    19,
    19,
    20,
    20,
    21,
    21,
    22,
    22,
    23,
    23,
    23,
    24,
    24,
    25,
    25,
    25,
    26,
    26,
    27,
    27,
    27,
    28,
    28,
    28,
    29,
    29,
    30,
    30,
    30,
    31,
    31,
    31,
    32,
    32,
    32,
    33,
    33,
    33,
    33,
    34,
    34,
    34,
    35,
    35,
    35,
    36,
    36,
    36,
    36,
    37,
    37,
    37,
    38,
    38,
    38,
    38,
    39,
    39,
    39,
    39,
    40,
    40,
    40,
    40,
    41,
    41,
    41,
    41,
    42,
    42,
    42,
    42,
    43,
    43,
    43,
    43,
    44,
    44,
    44,
    44,
    45,
    45,
    45,
    45,
    45,
    46,
    46,
    46,
    46,
    47,
    47,
    47,
    47,
    47,
    48,
    48,
    48,
    48,
    49,
    49,
    49,
    49,
    49,
    50,
    50,
    50,
    50,
    50,
    51,
    51,
    51,
    51,
    51,
    52,
    52,
    52,
    52,
    52,
    53,
    53,
    53,
    53,
    53,
    54,
    54,
    54,
    54,
    54,
    54,
    55,
    55,
    55,
    55,
    55,
    56,
    56,
    56,
    56,
    56,
    56,
    57,
    57,
    57,
    57,
    57,
    57,
    58,
    58,
    58,
    58,
    58,
    59,
    59,
    59,
    59,
    59,
    59,
    60,
    60,
    60,
    60,
    60,
    60,
    61,
    61,
    61,
    61,
    61,
    61,
    62,
    62,
    62,
    62,
    62,
    62,
    62,
    63,
    63,
    63,
    63,
    63,
    63,
    64,
    64,
    64,
    64,
    64,
    64,
    65,
    65,
    65,
    65,
    65,
    65,
    65,
    66,
    66,
    66,
    66,
    66,
    66,
    66,
    67,
    67,
    67,
    67,
    67,
    67,
    68,
    68,
    68,
    68,
    68,
    68,
    68,
    69,
    69,
    69,
    69,
    69,
    69,
    69,
    70,
    70,
    70,
    70,
    70,
    70,
    70,
    70,
    71,
    71,
    71,
    71,
    71,
    71,
    71,
    72,
    72,
    72,
    72,
    72,
    72,
    72,
    73,
    73,
    73,
    73,
    73,
    73,
    73,
    73,
    74,
    74,
    74,
    74,
    74,
    74,
    74,
    75,
    75,
    75,
    75,
    75,
    75,
    75,
    75,
    76,
    76,
    76,
    76,
    76,
    76,
    76,
    76,
    77,
    77,
    77,
    77,
    77,
    77,
    77,
    77,
    78,
    78,
    78,
    78,
    78,
    78,
    78,
    78,
    79,
    79,
    79,
    79,
    79,
    79,
    79,
    79,
    80,
    80,
    80,
    80,
    80,
    80,
    80,
    80,
    80,
    81,
    81,
    81,
    81,
    81,
    81,
    81,
    81,
    82,
    82,
    82,
    82,
    82,
    82,
    82,
    82,
    82,
    83,
    83,
    83,
    83,
    83,
    83,
    83,
    83,
    83,
    84,
    84,
    84,
    84,
    84,
    84,
    84,
    84,
    84,
    85,
    85,
    85,
    85,
    85,
    85,
    85,
    85,
    85,
    86,
    86,
    86,
    86,
    86,
    86,
    86,
    86,
    86,
    87,
    87,
    87,
    87,
    87,
    87,
    87,
    87,
    87,
    88,
    88,
    88,
    88,
    88,
    88,
    88,
    88,
    88,
    89,
    89,
    89,
    89,
    89,
    89,
    89,
    89,
    89,
    89,
    90,
    90,
    90,
    90,
    90,
    90,
    90,
    90,
    90,
    90,
    91,
    91,
    91,
    91,
    91,
    91,
    91,
    91,
    91,
    92,
    92,
    92,
    92,
    92,
    92,
    92,
    92,
    92,
    92,
    93,
    93,
    93,
    93,
    93,
    93,
    93,
    93,
    93,
    93,
    94,
    94,
    94,
    94,
    94,
    94,
    94,
    94,
    94,
    94,
    95,
    95,
    95,
    95,
    95,
    95,
    95,
    95,
    95,
    95,
    95,
    96,
    96,
    96,
    96,
    96,
    96,
    96,
    96,
    96,
    96,
    97,
    97,
    97,
    97,
    97,
    97,
    97,
    97,
    97,
    97,
    97,
    98,
    98,
    98,
    98,
    98,
    98,
    98,
    98,
    98,
    98,
    99,
    99,
    99,
    99,
    99,
    99,
    99,
    99,
    99,
    99,
    99,
    100,
    100,
    100,
    100,
    100,
    100,
    100,
    100,
    100,
    100,
    100,
    101,
    101,
    101,
    101,
    101,
    101,
    101,
    101,
    101,
    101,
    101,
    102,
    102,
    102,
    102,
    102,
    102,
    102,
    102,
    102,
    102,
    102,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    103,
    104,
    104,
    104,
    104,
    104,
    104,
    104,
    104,
    104,
    104,
    104,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    105,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    106,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    107,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    108,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    109,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    110,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    111,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    112,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    113,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    114,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    115,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    116,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    117,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    118,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    119,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    120,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    121,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    122,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    123,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    124,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    125,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    126,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    127,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    128,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    129,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    130,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    131,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    132,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    133,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    134,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    135,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    136,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    137,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    138,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    139,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    140,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    141,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    142,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    143,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    144,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    145,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    146,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    147,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    148,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    149,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    150,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    151,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    152,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    153,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    154,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    155,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    156,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    157,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    158,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    159,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    160,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    161,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    162,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    163,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    164,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    165,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    166,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    167,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    168,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    169,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    170,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    171,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    172,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    173,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    174,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    175,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    176,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    177,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    178,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    179,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    180,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    181,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    182,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    183,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    184,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    185,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    186,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    187,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    188,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    189,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    190,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    191,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    192,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    193,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    194,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    195,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    196,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    197,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    198,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    199,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    200,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    201,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    202,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    203,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    204,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    205,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    206,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    207,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    208,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    209,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    210,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    211,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    212,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    213,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    214,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    215,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    216,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    217,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    218,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    219,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    220,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    221,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    222,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    223,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    224,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    225,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    226,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    227,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    228,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    229,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    230,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    231,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    232,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    233,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    234,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    235,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    236,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    237,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    238,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    239,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    240,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    241,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    242,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    243,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    244,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    245,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    246,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    247,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    248,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    249,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    250,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    251,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    252,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    253,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    254,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255,
    255
};
#endif
/*- End of file ------------------------------------------------------------*/
